package com.alan.libapi.utils;

public class IntegerUtils {

	/**
	 * 获取大端int型byte数据
	 * @param integer 整形数据
	 * @return
	 */
	public static byte[] toBigEndianBytes(int integer)
	{
		
		return toBigEndianBytes(integer,4);
		
	}
	/**
	 * 获取大端int型byte数据
	 * @param integer 整形数据
	 * @param iArrayLen bytes的长度
	 * @return
	 */
	public static byte[] toBigEndianBytes(int integer, int iArrayLen) {
		 byte[] bLocalArr = new byte[iArrayLen];
		    for (int i = 0; (i < 4) && (i < iArrayLen); i++) {
		        bLocalArr[4 - 1 -i] = (byte) (integer >> 8 * i & 0xFF);
		    }
		    return bLocalArr;
	}
	/**
	 * 获取小端int型byte数据
	 * @param integer 整形数据
	 * @return
	 */
	public static byte[] toBytes(int integer)
	{
		 return toBytes(integer,4);

	}
	/**
	 * 获取小端int型byte数据
	 * @param integer 整形数据
	 * @param iArrayLen bytes的长度
	 * @return
	 */
	public static byte[] toBytes(int integer,int iArrayLen)
	{
		 byte[] bLocalArr = new byte[iArrayLen];
		    for (int i = 0; (i < 4) && (i < iArrayLen); i++) {
		        bLocalArr[i] = (byte) (integer >> 8 * i & 0xFF);
		    }
		    return bLocalArr;

	}
	
	/**
	 * 大端byte数组转化成int
	 * @param bytes 大端数组
	 * @return 
	 */
	public static int getIntegerFromBigEndianBytes(byte[] bytes)
	{
		int iOutcome = 0;
	    byte bLoop;

	    for (int i = 0; i < bytes.length; i++) {
	        bLoop = bytes[i];
	        iOutcome += (bLoop & 0xFF) << (8 * (bytes.length - 1-i));
	    }
	    return iOutcome;

	}
	/**
	 * 小端byte数据转化成int
	 * @param bytes 小端数组
	 * @return
	 */
	public static int getInteger(byte[] bytes)
	{
		int iOutcome = 0;
		byte bLoop;
		
		for (int i = 0; i < bytes.length; i++) {
			bLoop = bytes[i];
			iOutcome += (bLoop & 0xFF) << (8 * i);
		}
		return iOutcome;
		
	}
}
